package com.xxs.controller.admin;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;

import com.jfinal.aop.Before;
import com.xxs.common.Const;
import com.xxs.interceptor.AdminInterceptor;
import com.xxs.utils.file.FileUtils;
import com.xxs.utils.xml.Fields;
import com.xxs.utils.xml.XmlDom4jUtils;

/**
 * 站点管理
 */
@Before(AdminInterceptor.class)
@SuppressWarnings("unchecked")
public class SiteController extends BaseAdminController {
	public void refSite(){
		String modelName = getModeName();
		List<String> paths = FileUtils.find(Const.XML_PREFIX, "\\S+\\.xml");
		for (int i = 0; i < paths.size(); i++) {
			String path = paths.get(i);
	    	Element element = null;
	    	Document document = XmlDom4jUtils.getDocument(path);
	    	List<Element> listElements = document.selectNodes("/sites/site");
	    	if(listElements!=null && listElements.size()>0){
	    		element = listElements.get(0);
	    	}
	    	List<Fields> fieldList = getFields();
			Document sitedocument = XmlDom4jUtils.getDocument(Const.SITE_PATH);
			//判断站点配置中的id和code字段，只要有任意一个已存在，就不能导入
			String id = element.attributeValue("id");
			String code = element.attributeValue("code");
			//根据id查找sites.xml中是否有已存在的id
			List<Element> idres = sitedocument.selectNodes("/"+modelName+"s/"+modelName+"[@id='"+id+"']");
	    	if(idres!=null && idres.size()>0){
//	    		renderText("id:"+id+"已在站点列表中存在，请修改后导入");
	    		System.out.println("id:"+id+"已在站点列表中存在，请修改后导入");
	    		continue;
	    	}
	    	//根据code查找sites.xml中是否有已存在的code
			List<Element> coderes = sitedocument.selectNodes("/"+modelName+"s/"+modelName+"[@code='"+code+"']");
	    	if(coderes!=null && coderes.size()>0){
//	    		renderText("id:"+id+"已在站点列表中存在，请修改后导入");
	    		System.out.println("code:"+code+"已在站点列表中存在，请修改后导入");
	    		continue;
	    	}
			Element siteelement = sitedocument.getRootElement();
			Element newElement = siteelement.addElement(modelName);
			for (int j = 0; j < fieldList.size(); j++) {
				System.out.println("当前循环的属性名："+fieldList.get(j).getName()+"填充的内容"+element.attributeValue(fieldList.get(j).getName()));
				newElement.addAttribute(fieldList.get(j).getName(), element.attributeValue(fieldList.get(j).getName()));
			}
			try {
				XmlDom4jUtils.saveDocumentToFile(Const.SITE_PATH, sitedocument);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
    	list();
    }
}
